using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace WorkOrder.Models
{
      [Table("流程节点表")]
    public class 流程节点表
    {
        [Key]
        [Column("节点ID")]
        public string 节点ID { get; set; } = Guid.NewGuid().ToString();

        [Column("流程ID")]
        public string 流程ID { get; set; }

        [Required]
        [StringLength(100)]
        public string 节点名称 { get; set; }

        public OperationType 操作类型 { get; set; }

        // 节点类型：普通节点/分支节点/合并节点
        [Column("节点类型")]
        public NodeType 节点类型 { get; set; } = NodeType.普通节点;

        [Column("工单状态")]
        public WorkOrderStatus 工单状态 { get; set; }

        [ForeignKey("流程ID")]
        public virtual 流程配置表 流程 { get; set; }

        // 下一节点关系集合
        [InverseProperty("源节点")]
        public virtual ICollection<节点路由表> 源节点 { get; set; } = new List<节点路由表>();


        [InverseProperty("目标节点")]
        public virtual ICollection<节点路由表> 目标节点 { get; set; } = new List<节点路由表>();

        [Column("负责人规则类型")]
        public AssignRuleType 负责人规则类型 { get; set; } = AssignRuleType.角色;

        [Column("负责人规则参数")]
        public string? 负责人规则参数 { get; set; } // 存储如角色名、用户ID等



    }
    public enum AssignRuleType
{
    角色,       // 按角色分配
    指定用户,    // 直接指定用户
    上级领导,    // 工单提交者的上级
    动态部门负责人 // 根据工单的部门字段动态匹配
}

    public enum NodeType
    {
        普通节点,
        分支节点,
        开始节点,
        结束节点,
    }
}
